/**
 * 主题接口 - 观察者模式中的主题抽象
 * 
 * 维护了一个观察者列表，并提供了注册、移除和通知观察者的方法
 */
package com.mkx.behaviorals.observer;

public interface Subject {
    /**
     * 注册观察者
     * 
     * @param observer 要注册的观察者
     */
    void registerObserver(Observer observer);
    
    /**
     * 移除观察者
     * 
     * @param observer 要移除的观察者
     */
    void removeObserver(Observer observer);
    
    /**
     * 通知所有注册的观察者
     */
    void notifyObservers();
    
    /**
     * 设置状态
     * 
     * @param state 新的状态值
     */
    void setState(Object state);
    
    /**
     * 获取状态
     * 
     * @return 当前状态值
     */
    Object getState();
}